Data processing systems which allow for multiple concurrent processes have been known for years. For example, multi-user systems employing mainframe computers with remote terminals include IBM VM and MVS systems. These systems allow for multiple processes on a single computer system. As a result, the hardware of the data processing system may be shared across multiple users or multiple processes.
One example of a shared resource in a data processing system may be a network communication adapter. A network communication adapter allows a computer to communicate with other computers in a network, such as for example, over the Internet or an intranet. The communication adapter receives data from the computer system and transmits the data over the network. Similarly, the communication adapter may receive data from the network and provide the data to the computer system. In many modern layered data processing systems, the hardware of the communication adapter receives data from and provides data to the Dynamic Link Control (DLC) layer of the computer system.
Connections to the communications adapter generally fall into two categories: guaranteed bandwidth connections and best efforts connections. Guaranteed bandwidth connections result from negotiation between the DLC layer and the adapter to establish a guaranteed transmission rate for a connection through the adapter. Thus, for example, a connection may be establish through an adapter which guarantees a throughput of 1 megabyte of data per second. In a best efforts connection, the adapter utilizes whatever bandwidth is available to send the data. For example, if an adapter has a maximum throughput of 6 Mb/sec. and 3 Mb/sec. are allocated to guaranteed bandwidth connections, then on average 3 Mb/sec. will be available for use by best efforts connections. However, with a best efforts connection there is no guarantee that any bandwidth of the adapter will be available for handling the connection's data.
Typically, a communications adapter includes data buffers which buffer the data which is transmitted to and received from the DLC layer. These buffers may be used by multiple applications executing on the data processing system that use the communications adapter to communicate with the network, thus providing for multiple connections through the communications adapter. However, if more data is provided to the network communications adapter than may be buffered by the adapter, the adapter will typically discard the transmitted data. Thus, if the users or applications are using, for example, High Performance Routing (HPR), end-to-end error recovery of HPR will typically cause retransmission of the discarded data. This error recovery protocol, while providing for higher reliability, may cause reduced throughput of the adapter as bandwidth normally utilized by data communications is utilized for retransmitted data. It is, therefore, desirable to avoid the case where the buffers of the adapter are over-utilized.
An additional characteristic that may further complicate providing for both best efforts and guaranteed bandwidth connections is that the communications with the adapter may be "bursty" in that the data is not provided at a constant rate. If the peak of a burst of data is received from best efforts connection while little or no guaranteed band width data is received, then that data may over-utilize the adapter for a period of time. Because of the discontinuous nature with which data may be received by the communications adapter it may be possible for all of the buffers of the adapter to be filled by data for a best efforts communication. Therefore, the data from a guaranteed bandwidth communication may be discarded and the guaranteed bandwidth connection may not be provided with the required bandwidth. Furthermore, if a guaranteed bandwidth connection has a large amount of data to be carried by the adapter, the guaranteed bandwidth connection may dominate use of the adapter and, thereby, preclude use of other guaranteed bandwidth connections or best efforts connections. Thus, simply prioritizing the guaranteed bandwidth data may not prevent overrun of the adapter and may not provide a fair allocation of adapter usage among connections.
In light of the above discussion, a need exists for improvements in the control of data flow for guaranteed bandwidth connections.